# 字符串切片操作
info29 = "abcdefgh"

# 从索引 2 开始到索引 5（不包括5），步长为1，结果是 'cde'
print(info29[2:5])

# 与上一行相同，显式指定步长为1，结果是 'cde'
print(info29[2:5:1])

# 负索引：从倒数第6个到倒数第3个（不包括-3），即索引2到5，结果是 'cde'
print(info29[-6:-3])

# 负索引切片，步长为1，结果同上 'cde'
print(info29[-6:-3:1])

# 从索引3到索引8（超出长度也没问题），结果是 'defgh'
print(info29[3:8])

# 从索引3开始，一直到最后，结果是 'defgh'
print(info29[3:])

# 从倒数第5个字符开始，一直到末尾，即索引3开始，结果是 'defgh'
print(info29[-5:])

# 从索引0到5（不包括5），每2个取一个，结果是 'ace'
print(info29[0:5:2])

# 省略起始位置，从开头到索引5（不包括5），每2个取一个，结果是 'ace'
print(info29[:5:2])

# 步长为-1，表示反向遍历，实现字符串反转，结果是 'hgfedcba'
print(info29[::-1])

# 列表切片与嵌套元素访问
info30 = [11, "aa", 1.88, (1, 2, 3), ["aa", "bb"]]

# 打印整个列表
print(info30)

# 访问列表第3个元素（索引为3），即元组 (1, 2, 3)，再取该元组中索引为1的元素，结果是 2
print(info30[3][1])